source("../lib/plot-element.R")
# config
xs <- c(1, 2, 3, 4)
trace1 <- c(1, 4, 9, 16)
trace2 <- c(0.5, 2, 4.5, 8)
trace1_name <- TeX("\\alpha_{1c} = 352 \\pm 11 \\text{ km s}^{-1}")
trace2_name <- TeX("\\beta_{1c} = 25 \\pm 11 \\text{ km s}^{-1}")
title <- "Figure 1: LaTeX in plotly"
xtitle <- TeX("\\sqrt{(n_\\text{c}(t|{T_\\text{early}}))}")
ytitle <- TeX("d, r \\text{ (solar radius)}")
# canvas
p0 <- create_canvas() %>% config(mathjax = "cdn")
# add layers
p <- p0 %>%
add_markers(x = xs, y = trace1, name = trace1_name) %>%
add_markers(x = xs, y = trace2, name = trace2_name) %>%
layout(
title = list(text = title),
legend = list(x = 0, xanchor = "left"),
xaxis = list(title = xtitle),
yaxis = list(title = ytitle)
)
p
# 含有LaTeX公式的图,若保存时selfcontained=FALSE,
# 则只有在(网络或本地)服务器上,主文件才能访问所需的依赖文件(mathjax),才能正确显示公式
saveWidget(p, "../figure/LaTeX-in-plotly.html", selfcontained = F, libdir = "lib")
saveWidget(p, "../figure/LaTeX-in-plotly-self-contained.html", selfcontained = T)
LS0tDQp0aXRsZTogIkxhVGVYIGluIFBsb3RseSINCnN1YnRpdGxlOiAnJw0KYXV0aG9yOiAiSHVtb29uIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIGNzczogLi4vY3NzL3N0eWxlLmNzcw0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICB0aGVtZTogdW5pdGVkDQogICAgaGlnaGxpZ2h0OiBoYWRkb2NrDQogICAgbnVtYmVyX3NlY3Rpb25zOiBubw0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiA0DQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiB5ZXMNCiAgICAgIHNtb290aF9zY3JvbGw6IHllcw0KZG9jdW1lbnRjbGFzczogY3RleGFydA0KY2xhc3NvcHRpb246IGh5cGVycmVmLA0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9DQpzb3VyY2UoIi4uL2xpYi9SbWFya2Rvd25fY29uZmlnLlIiKQ0KDQojIyBnbG9iYWwgb3B0aW9ucyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICB3aWR0aCA9IGNvbmZpZyR3aWR0aCwNCiAgZmlnLndpZHRoID0gY29uZmlnJGZpZy53aWR0aCwNCiAgZmlnLmFzcCA9IGNvbmZpZyRmaWcuYXNwLA0KICBvdXQud2lkdGggPSBjb25maWckb3V0LndpZHRoLA0KICBmaWcuYWxpZ24gPSBjb25maWckZmlnLmFsaWduLA0KICBmaWcucGF0aCA9IGNvbmZpZyRmaWcucGF0aCwNCiAgZmlnLnNob3cgPSBjb25maWckZmlnLnNob3csDQogIHdhcm4gPSBjb25maWckd2FybiwNCiAgd2FybmluZyA9IGNvbmZpZyR3YXJuaW5nLA0KICBtZXNzYWdlID0gY29uZmlnJG1lc3NhZ2UsDQogIGVjaG8gPSBjb25maWckZWNobywNCiAgZXZhbCA9IGNvbmZpZyRldmFsLA0KICB0aWR5ID0gY29uZmlnJHRpZHksDQogIGNvbW1lbnQgPSBjb25maWckY29tbWVudCwNCiAgY29sbGFwc2UgPSBjb25maWckY29sbGFwc2UsDQogIGNhY2hlID0gY29uZmlnJGNhY2hlLA0KICBjYWNoZS5jb21tZW50cyA9IGNvbmZpZyRjYWNoZS5jb21tZW50cywNCiAgYXV0b2RlcCA9IGNvbmZpZyRhdXRvZGVwDQopDQpgYGANCg0KDQpgYGB7cn0NCnNvdXJjZSgiLi4vbGliL3Bsb3QtZWxlbWVudC5SIikNCmBgYA0KDQoNCmBgYHtyfQ0KIyBjb25maWcNCnhzIDwtIGMoMSwgMiwgMywgNCkNCnRyYWNlMSA8LSBjKDEsIDQsIDksIDE2KQ0KdHJhY2UyIDwtIGMoMC41LCAyLCA0LjUsIDgpDQp0cmFjZTFfbmFtZSA8LSBUZVgoIlxcYWxwaGFfezFjfSA9IDM1MiBcXHBtIDExIFxcdGV4dHsga20gc31eey0xfSIpDQp0cmFjZTJfbmFtZSA8LSBUZVgoIlxcYmV0YV97MWN9ID0gMjUgXFxwbSAxMSBcXHRleHR7IGttIHN9XnstMX0iKQ0KdGl0bGUgPC0gIkZpZ3VyZSAxOiBMYVRlWCBpbiBwbG90bHkiDQp4dGl0bGUgPC0gVGVYKCJcXHNxcnR7KG5fXFx0ZXh0e2N9KHR8e1RfXFx0ZXh0e2Vhcmx5fX0pKX0iKQ0KeXRpdGxlIDwtIFRlWCgiZCwgciBcXHRleHR7IChzb2xhciByYWRpdXMpfSIpDQoNCg0KIyBjYW52YXMNCnAwIDwtIGNyZWF0ZV9jYW52YXMoKSAlPiUgY29uZmlnKG1hdGhqYXggPSAiY2RuIikNCg0KDQojIGFkZCBsYXllcnMNCnAgPC0gcDAgJT4lDQogIGFkZF9tYXJrZXJzKHggPSB4cywgeSA9IHRyYWNlMSwgbmFtZSA9IHRyYWNlMV9uYW1lKSAlPiUNCiAgYWRkX21hcmtlcnMoeCA9IHhzLCB5ID0gdHJhY2UyLCBuYW1lID0gdHJhY2UyX25hbWUpICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSB0aXRsZSksDQogICAgbGVnZW5kID0gbGlzdCh4ID0gMCwgeGFuY2hvciA9ICJsZWZ0IiksDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0geHRpdGxlKSwNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSB5dGl0bGUpDQogICkNCnANCg0KDQojIOWQq+aciUxhVGVY5YWs5byP55qE5Zu+77yM6Iul5L+d5a2Y5pe2c2VsZmNvbnRhaW5lZD1GQUxTRe+8jA0KIyDliJnlj6rmnInlnKjvvIjnvZHnu5zmiJbmnKzlnLDvvInmnI3liqHlmajkuIrvvIzkuLvmlofku7bmiY3og73orr/pl67miYDpnIDnmoTkvp3otZbmlofku7bvvIhtYXRoamF477yJ77yM5omN6IO95q2j56Gu5pi+56S65YWs5byPDQpzYXZlV2lkZ2V0KHAsICIuLi9maWd1cmUvTGFUZVgtaW4tcGxvdGx5Lmh0bWwiLCBzZWxmY29udGFpbmVkID0gRiwgbGliZGlyID0gImxpYiIpDQpzYXZlV2lkZ2V0KHAsICIuLi9maWd1cmUvTGFUZVgtaW4tcGxvdGx5LXNlbGYtY29udGFpbmVkLmh0bWwiLCBzZWxmY29udGFpbmVkID0gVCkNCmBgYA0K